#pragma once

#include "Syntax/Kind.hpp"
#include "Syntax/Token.hpp"

#include "Syntax/Statement/Statement.hpp"
#include "Syntax/Statement/ElseClause.hpp"
#include "Syntax/Expression/Expression.hpp"

class WhileStatementSyntax : public StatementSyntax
{
public:
    SharedToken WhileKeyword;
    SharedExpression Condition;
    SharedStatement BodyStatement;

public:
    WhileStatementSyntax(SharedToken whileKeyword, SharedExpression condition, SharedStatement bodyStatement)
        : StatementSyntax(SyntaxKind::WhileStatement, "WhileStatement"),
          WhileKeyword(whileKeyword), Condition(condition), BodyStatement(bodyStatement) {}
    ~WhileStatementSyntax() = default;
};
// 定义类型;
typedef std::shared_ptr<WhileStatementSyntax> SharedWhileStatement;